#ifndef INPUT_H
#define INPUT_H

#include "Common.h"

namespace GenBen {

typedef byte Key;

#define KEY_UP 0x26
#define KEY_DOWN 0x28
#define KEY_LEFT 0x25
#define KEY_RIGHT 0x27
#define KEY_ENTER '\r'
#define KEY_BACKSPACE '\b'

enum MouseButton
{
	MBUTTON_LEFT = 0,
	MBUTTON_RIGHT = 1,
	MBUTTON_MIDDLE = 2,
	MBUTTON_INVALID = 3
};

class Input
{
public:
	Input() {};
	virtual ~Input() {};

	// Keyboard
	virtual bool isKeyPressed(Key key) = 0;
	virtual bool isKeyUp(Key key) = 0;
	virtual bool isKeyDown(Key key) = 0;

	// Mouse
	virtual VectorI getMousePos() = 0;
	virtual VectorI getMouseRelativePos() = 0;
	virtual int getRelativeWheel() = 0;
	virtual bool isMouseButtonPressed(MouseButton button) = 0;
	virtual bool isMouseButtonUp(MouseButton button) = 0;
	virtual bool isMouseButtonDown(MouseButton button) = 0;
};

} // namespace

#endif
